#pragma once

#include "stdafx.h"
#include "Singleton.h"

class GameLog
{
public:
	//Liste des differentes types d'erreurs
	enum LogLevel
	{
		G_NOTICE,	//Notifications de base
		G_WARNING,	//Avertissements
		G_FAILURE,	//Tentatives echouees
		G_ERROR,	//Erreurs
		G_CRITICAL	//Erreurs critiques
	};

public:
	GameLog();
	GameLog(bool activateLog, std::string fileName);
	~GameLog(void);

public:
	bool				LogFileExist(std::string file);		//Le fichier de log specifie en parametre existe-il?
	bool				CreateLogFile(std::string file);	//Creer le fichier de log dans le dossier indique
	bool				SetLogLevel(GameLog::LogLevel);		//Determine le niveau de log actuel
	GameLog::LogLevel	GetLogLevel();						//Recupere le niveau de log actuel
	std::string			GetLogFilePath() const;				//Recupere le chemin du fichier de log

public:
	bool				AddToLog(GameLog::LogLevel, std::string error, std::string location, std::string params);		//Ajoute une nouvelle ligne au log

private:
	bool				_logActivated;
	GameLog::LogLevel	_logLevel;
	std::string			_logFileName;
	std::ofstream		*_logFileStream;
};

